#include <cstdio>

struct BigNum
{
    int len, num[ 100 ];
    BigNum( )
    {
        len = 1;
        num[ 0 ] = 0;
    }
};

BigNum operator * ( BigNum a, const int b )
{
    int i;
    for ( i = 0; i < a.len; i++ )
        a.num[ i ] *= b;
    for ( i = 0; i < a.len; i++ )
        if ( a.num[ i ] >= 10000 )
        {
            if ( i == a.len - 1 )
            {
                a.len++;
                a.num[ i + 1 ] = 0;
            }
            a.num[ i + 1 ] += a.num[ i ] / 10000;
            a.num[ i ] %= 10000;
        }
    return a;
}

void operator -= ( BigNum &a, const int b )
{
    int i = 0;
    a.num[ 0 ] -= b;
    while ( a.num[ i ] < 0 )
    {
        a.num[ i ] += 10000;
        a.num[ ++i ]--;
    }
    if ( a.num[ a.len - 1 ] == 0 )
        a.len--;
}

void operator += ( BigNum &a, const int b )
{
    int i = 0;
    a.num[ 0 ] += b;
    while ( a.num[ i ] >= 10000 )
    {
        if ( i == a.len - 1 )
        {
            a.len++;
            a.num[ i + 1 ] = 0;
        }
        a.num[ i + 1 ] += a.num[ i ] / 10000;
        a.num[ i ] %= 10000;
    }
}

int main( )
{
    BigNum f[ 1001 ];
    int i, n;
    for ( i = 2; i <= 1000; i++ )
    {
        f[ i ] = f[ i - 1 ] * 2;
        if ( i & 1 )
            f[ i ] -= 1;
        else
            f[ i ] += 1;
    }
    while ( scanf("%d", &n) != EOF )
    {
        printf("%d", f[ n ].num[ f[ n ].len - 1 ]);
        for ( i = f[ n ].len - 2; i >= 0; i-- )
            printf("%04d", f[ n ].num[ i ]);
        printf("\n");
    }
    return 0;
}
